#include <iostream>
#include <algorithm>
using namespace std;

const int MAX = 8000 + 10;
int nums[MAX];
int sums[MAX];
int check(int *nums, int n, int num){
    int left = 1, right = n;
    while(left <= right){
        int mid = left + (right - left) / 2;
        if(num == nums[mid]){
            return mid;
        }else if(num > nums[mid]){
            left = mid + 1;
        }else{
            right = mid - 1;
        }
    }
    return 0;
}
void record(int *nums, int n, int num, int *flags){
    int l = 1;
    while(nums[l] != num) l++;
    while(l <= n && nums[l] == num) {
        flags[l] = 1;
        l++;
    }
}
int main(){
    int T;
    cin>>T;
    int n;
    while(T--){
        cin>>n;
        for(int i = 0; i <= n; i++) sums[i] = 0;
        for(int i = 1; i <= n; i++){
            cin>>nums[i];
            sums[i] = sums[i - 1] + nums[i];
        }
        int help[n + 1];
        int flags[n + 1] = {0};
        for(int i = 0; i <= n; i++) help[i] = nums[i];
        help[0] = 0;

        sort(help, help + n + 1);
        for(int i = 1; i < n; i++){
            for(int j = i + 1; j <= n; j++){
                if(check(help, n, sums[j] - sums[i - 1])){
                    record(help, n, sums[j] - sums[i - 1], flags);
                }
            }
        }
        int res = 0;
        for(int i = 1; i <= n; i++)
            if(flags[i] == 1) res++;

        cout<<res<<endl;
    }
    return 0;
}

/*

mokit
题目描述
定义数组中的某个数ai如果是特殊的，则满足：在数组中存在一个长度大于等于2的连续子序列，其和为ai。

给你一个长度为n的数组，问有多少数是特殊的。

输入说明
第一行输入一个T，代表测试样例个数， 1 <= T <= 1000

接下来2T行，第一行输入一个整数n,代表数组中元素的个数

第二行输入n个整数ai，代表数组中的元素。

其中，1 <= n <= 8000, 1 <= ai <= 8000

输出说明
对于每个测试样例，输出一个整数代表答案，每个样例答案占一行。

输入样例复制
5

9

3 1 4 1 5 9 2 6 5

3

1 1 2

5

1 1 1 1 1

8

8 7 6 5 4 3 2 1

1

1

输出样例复制
5

1

0

4

0

数据范围提示
对于第一组数据，4有{3, 1}的子序列，前一个5有{1，4}，9有{3,1,4,1}，6有{1,5}，后一个5有{4,1}，所以特殊的数有5个。

第二组数据只有2有{1, 1}的子序列满足要求。

第三组数据没有能满足条件的子序列。

第四组有7，6，5，3满足条件。

第五组没有满足条件的子序列。

*/